// Growth-rate calculator.

// Basic calculator for growth rate of a language.
// User should provide its own implementation of AntiDictionary
// class and pass options that control the calculation.

#ifndef GRATE_CALCULATOR_H
#define GRATE_CALCULATOR_H

#include "grate/antidictionary.h"
#include "grate/dfa.h"
#include "grate/eigenvalue.h"

namespace growth_rate {

class Calculator {
 public:
  // Returns the growth rate of a language defined by lexmin
  // antidictionary.
  // NOTE: deletes antidictionary.
  static double get_language_growth_rate(
      LexminAntiDictionary *AD,
      bool verbosity = false,
      const EigenvalueOptions &options = EigenvalueOptions());
};

}  // namespace growth_rate

#endif  // GRATE_CALCULATOR_H
